home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Lengths / Modify / l-complement < prev    next >
Lisp/Scheme  |  1998-08-11  |  1KB  |  46 lines

  1. l-complement position length type pattern 
  2.  
  3. This function is used to complement existing values in a note-length list with further values to enable the whole list to 'add-up' to a user-defined zone-length. 
  4.  
  5. type :note :rest seed
  6. operator :first :last seed
  7.  
  8. (setq len1 (qlength '((8-11) (20-11111) (8-11) (12-111))))
  9.  
  10. (setq pat (l-tie len1))
  11. => ((1/8) (7/40) (1/20 1/20 1/20) (7/40) (5/24) (1/12 1/12))
  12.  
  13. (l-complement :first :note '1/4 pat)
  14. => ((1/8 1/8) (3/40 7/40) (1/10 1/20 1/20 1/20)
  15.     (3/40 7/40) (1/24 5/24) (1/12 1/12 1/12))
  16.  
  17. (l-complement :first :rest '1/4 pat)
  18. => ((-1/8 1/8) (-3/40 7/40) (-1/10 1/20 1/20 1/20)
  19.     (-3/40 7/40) (-1/24 5/24) (-1/12 1/12 1/12))
  20.  
  21. (l-complement nil nil '1/4 pat)
  22. => ((-1/8 1/8) (7/40 -3/40) (1/20 1/20 1/20 1/10)
  23.     (7/40 -3/40) (5/24 1/24) (1/12 1/12 1/12))
  24. or...
  25.  
  26. (setq len2 (permute-unique (qlength '(20-10100))))
  27. (setq prime (vector-to-list (gen-primes 18)))
  28.  
  29. (l-complement nil :note '1/4
  30.               (l-modify .45 nil :note :times
  31.                         (symbol-shuffle prime .32) len2))
  32.  
  33. => ((3/20 13/20 11/20 -1/20 -1/20 -1/20)
  34.     (3/20 1/10 -1/20 17/20 -1/20 -1/20)
  35.     (1/20 -1/20 -1/20 7/20 -1/20 1/5)
  36.     (1/4 -1/20 -1/20 -1/20 3/20 1/5)
  37.     (3/20 -1/20 13/20 11/20 -1/20 -1/20)
  38.     (3/20 -1/20 1/10 -1/20 17/20 -1/20)
  39.     (-1/20 1/20 -1/20 -1/20 7/20 1/5)
  40.     (-1/20 -1/20 -1/20 1/4 3/20 1/5)
  41.     (-1/20 -1/20 13/20 11/20 -1/20 3/20)
  42.     (-1/20 -1/20 1/10 -1/20 17/20 3/20))
  43.  
  44.  
  45.  
  46.